# -*- coding: utf-8 -*-
"""
路径工具模块 - 处理开发环境和打包环境的路径差异
支持 PyInstaller 打包后的路径正确解析
"""

import os
import sys
from pathlib import Path


def get_base_dir():
    """
    获取应用的基础目录
    - 开发环境：脚本所在目录
    - PyInstaller 打包环境：_MEIPASS 目录
    """
    if getattr(sys, 'frozen', False):
        # PyInstaller 打包后的环境
        base_dir = sys._MEIPASS
    else:
        # 开发环境
        base_dir = os.path.dirname(os.path.abspath(__file__))
    
    return base_dir


def get_config_path(filename='games_config.json'):
    """获取配置文件的完整路径"""
    base_dir = get_base_dir()
    return os.path.join(base_dir, filename)


def get_game_path(relative_path):
    """
    获取游戏文件的完整路径
    
    Args:
        relative_path: 相对路径，如 'game/俄罗斯方块/tetris_game.py'
    
    Returns:
        完整的绝对路径
    """
    if os.path.isabs(relative_path):
        # 已经是绝对路径，直接返回
        return relative_path
    
    base_dir = get_base_dir()
    # 移除路径开头的 ./ 或 .\
    clean_path = relative_path.lstrip('./')
    clean_path = clean_path.lstrip('.\\')
    
    return os.path.join(base_dir, clean_path)


def get_asset_path(relative_path):
    """
    获取资源文件的完整路径
    
    Args:
        relative_path: 相对路径，如 'assets/game_log/俄罗斯方块/logo.png'
    
    Returns:
        完整的绝对路径
    """
    if os.path.isabs(relative_path):
        return relative_path
    
    base_dir = get_base_dir()
    clean_path = relative_path.lstrip('./')
    clean_path = clean_path.lstrip('.\\')
    
    return os.path.join(base_dir, clean_path)


def normalize_path(path):
    """
    规范化路径，移除 ./ 或 .\
    
    Args:
        path: 原始路径
    
    Returns:
        规范化后的路径
    """
    if not path:
        return path
    
    # 移除开头的 ./ 或 .\
    while path.startswith('./') or path.startswith('.\\'):
        path = path[2:]
    
    return path


def get_python_command():
    if getattr(sys, 'frozen', False):
        return "python"
    return sys.executable


def is_frozen():
    """检查是否在 PyInstaller 打包环境中"""
    return getattr(sys, 'frozen', False)
